/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ifconnect.model.entity;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Temporal;

/**
 *
 * @author Genemes
 */
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Postagem implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @SequenceGenerator(name = "Postagem_ID", sequenceName = "Postagem_SEQUENCE", allocationSize = 1, initialValue = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "Postagem_ID")
    private Long id;
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    private Date dataHora;
    private String conteudo;
    private String tipo_grupo;
    private Long id_grupo;
    
    @ManyToOne
    private Usuario usuario;
    
    @OneToMany(mappedBy="postagem", cascade={CascadeType.ALL}) 
    private Collection<Comentario> comentario;

    

    public Postagem() {}

    public Postagem(Date dataHora, String conteudo, String tipo_grupo, Long id_grupo, Usuario usuario, Collection<Comentario> comentario) {
        this.dataHora = dataHora;
        this.conteudo = conteudo;
        this.tipo_grupo = tipo_grupo;
        this.id_grupo = id_grupo;
        this.usuario = usuario;
        this.comentario = comentario;
    }

    public Long getId_grupo() {
        return id_grupo;
    }

    public void setId_grupo(Long id_grupo) {
        this.id_grupo = id_grupo;
    }

    public String getTipo_grupo() {
        return tipo_grupo;
    }

    public void setTipo_grupo(String tipo_grupo) {
        this.tipo_grupo = tipo_grupo;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Collection<Comentario> getComentario() {
        return comentario;
    }

    public void setComentario(Collection<Comentario> comentario) {
        this.comentario = comentario;
    }

    public String getConteudo() {
        return conteudo;
    }

    public void setConteudo(String conteudo) {
        this.conteudo = conteudo;
    }

    public Date getDataHora() {
        return dataHora;
    }

    public void setDataHora(Date dataHora) {
        this.dataHora = dataHora;
    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Postagem other = (Postagem) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        if (this.dataHora != other.dataHora && (this.dataHora == null || !this.dataHora.equals(other.dataHora))) {
            return false;
        }
        if ((this.conteudo == null) ? (other.conteudo != null) : !this.conteudo.equals(other.conteudo)) {
            return false;
        }
        if ((this.tipo_grupo == null) ? (other.tipo_grupo != null) : !this.tipo_grupo.equals(other.tipo_grupo)) {
            return false;
        }
        if (this.id_grupo != other.id_grupo && (this.id_grupo == null || !this.id_grupo.equals(other.id_grupo))) {
            return false;
        }
        if (this.usuario != other.usuario && (this.usuario == null || !this.usuario.equals(other.usuario))) {
            return false;
        }
        if (this.comentario != other.comentario && (this.comentario == null || !this.comentario.equals(other.comentario))) {
            return false;
        }
        return true;
    }



}
